home *** CD-ROM | disk | FTP | other *** search
- # include <stdio.h>
- # include <ingres.h>
- # include <aux.h>
- # include <access.h>
- # include <lock.h>
- # include <pv.h>
- # include <sccs.h>
-
- SCCSID(@(#)printr.c 8.2 2/8/85)
-
-
- extern int Status;
- short tTdbu[100];
- DESC Btreesec;
- int Btree_fd;
-
- main(argc, argv)
- int argc;
- char *argv[];
- {
- extern struct out_arg Out_arg;
- register char **av;
- register char *q;
- register char *p;
- int i;
- int badf;
- char style;
- char *user_ovrd;
- int mode;
- int nc;
- PARM pv[PV_MAXPC];
- PARM *pp;
- extern char *Parmvect[];
- extern char *Flagvect[];
- extern char *Dbpath;
-
- argv[argc] = NULL;
-
- # ifdef xSTR1
- tTrace(argv, 'T', tTdbu, 100);
- # endif
-
- mode = -1;
- badf = 0;
-
- /*
- ** Scan the argument vector and otherwise initialize.
- */
-
- i = initucode(argc, argv, TRUE, NULL, M_SHARE);
- switch (i)
- {
- case 0:
- case INDIRECT:
- break;
-
- case NODB:
- case INDNODB:
- printf("Database %s does not exist\n", Parmvect[0]);
- exit(-1);
-
- case NOACCESS:
- printf("You are not authorized to access this database\n");
- exit(-1);
-
- case INVALIDUSR:
- printf("You are not a valid INGRES user\n");
- exit(-1);
-
- case NODBNAME:
- printf("No database name specified\n");
- badf++;
- break;
-
- default:
- syserr("main: initucode %d", i);
- }
-
- for (av = Flagvect; (p = *av) != NULL; av++)
- {
- if (p[0] != '-')
- goto badflag;
- switch (p[1])
- {
- case 'h': /* do headers on each page */
- mode = 0;
- if (p[2] == 0)
- break;
- Out_arg.linesperpage = atoi(&p[2]);
- break;
-
- case 's': /* supress headers and footers */
- mode = 1;
- if (p[2] != 0)
- goto badflag;
- break;
-
- case 'c': /* set cNwidth */
- Out_arg.c0width = atoi(&p[2]);
- break;
- {
- badflag:
- printf("bad flag %s\n", p);
- badf++;
- continue;
- }
- break;
-
- case 'i': /* set iNwidth */
- switch (p[2])
- {
-
- case '1':
- Out_arg.i1width = atoi(&p[3]);
- break;
-
- case '2':
- Out_arg.i2width = atoi(&p[3]);
- break;
-
- case '4':
- Out_arg.i4width = atoi(&p[3]);
- break;
-
- default:
- goto badflag;
-
- }
- break;
-
- case 'f': /* set fNwidth */
- style = p[3];
- switch (style)
- {
-
- case 'e':
- case 'E':
- case 'f':
- case 'F':
- case 'g':
- case 'G':
- case 'n':
- case 'N':
- break;
-
- default:
- goto badflag;
-
- }
- for (q = &p[4]; *q != '.'; q++)
- if (*q == 0)
- goto badflag;
- *q++ = 0;
- switch (p[2])
- {
-
- case '4':
- Out_arg.f4width = atoi(&p[4]);
- Out_arg.f4prec = atoi(q);
- Out_arg.f4style = style;
- break;
-
- case '8':
- Out_arg.f8width = atoi(&p[4]);
- Out_arg.f8prec = atoi(q);
- Out_arg.f8style = style;
- break;
-
- default:
- goto badflag;
-
- }
- break;
-
- case 'v':
- if (p[2] == 0 || p[3] != 0)
- goto badflag;
- Out_arg.coldelim = p[2];
- break;
-
- default:
- goto badflag;
- }
- }
-
- /*
- ** Build parameter vector for print call
- */
-
- for (nc = 1, pp = pv; Parmvect[nc] != NULL; nc++)
- ((pp++)->pv_val).pv_str = Parmvect[nc];
- if (mode != -1)
- ((pp++)->pv_val).pv_int = mode;
- pp->pv_type = PV_EOF;
-
- /*
- ** Check for usage errors.
- */
-
- if (nc < 2)
- {
- badf++;
- printf("usage: printr [flags] database relation ...\n");
- }
- if (badf)
- {
- fflush(stdout);
- exit(-1);
- }
-
- p = Parmvect[0]; /* data base is first parameter */
- if (chdir(Dbpath) < 0)
- syserr("cannot access data base %s", p);
- # ifdef xTTR2
- if (tTf(1, 0))
- printf("entered database %s\n", Dbpath);
- # endif
-
- /* initialize access methods (and Admin struct) for user_ovrd test */
- acc_init();
-
- set_so_buf();
- # ifdef xTTR1
- if (tTf(1, 1))
- printf("printing %s\n", p);
- # endif
-
- print(nc - 1, pv);
- fflush(stdout);
- exit(0);
- }
-
-
-
- rubproc()
- {
- fflush(stdout);
- exit(0);
- }
-